package views.mediators
{
	import com.axon.mvc.helpers.AxVerbs;
	import com.axon.mvc.patterns.mediator.AxMediatorPopUp;
	
	import flash.display.DisplayObject;
	
	import models.vo.DocumentoApresentado;
	
	import mx.core.UIComponent;
	
	import views.components.DoctoApresPopUpRegView;

	public class DoctoApresPopUpRegMediator extends AxMediatorPopUp
	{
		//////////////////////////////////////////////////////////////////////////////////////////////////////

		public function DoctoApresPopUpRegMediator( parent: DisplayObject, vo: Object	= null )
		{
			super( parent, vo );
		}
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////

		private function get view(): DoctoApresPopUpRegView { return viewComponent as DoctoApresPopUpRegView; }
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////
		
		override protected function initialize(): void 
		{
			regResponseInterest( DocumentoApresentado, [AxVerbs.SAVE] );
		}	
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////

		public function eventDataChange(component: UIComponent): void
		{
			switch (component)
			{
				case view.cbEntregue: {
					
					if ( !view.cbEntregue.selected ) {
						view.dtEmissao.selectedDate = null;
						view.dtValidade.selectedDate = null; }
					break; }
						
				case view.dtEmissao: {
					
					if ( (view.dtEmissao.selectedDate) || (view.dtValidade.selectedDate) )
						view.cbEntregue.selected = true;
					break; }

				case view.dtValidade: {
					
					if ( (view.dtEmissao.selectedDate) || (view.dtValidade.selectedDate) )
						view.cbEntregue.selected = true;
					break; }
			}
		}

		//////////////////////////////////////////////////////////////////////////////////////////////////////

		public function eventOk(): void
		{
			var docto: DocumentoApresentado = DocumentoApresentado(view.vo);
			
			if ( docto.documento.expiravel && (!docto.validade) ) {
				view.dtValidade.setFocus();
				view.errorString = "Por favor, informe a data de validade do documento."; 
				return }
				
			docto.entregue		= view.cbEntregue.selected;
			docto.emissao		= view.dtEmissao.selectedDate;
			docto.validade		= view.dtValidade.selectedDate;
			docto.observacao	= view.txArObservacao.text;

			callController( DocumentoApresentado, AxVerbs.SAVE, docto );
				
		}

		//////////////////////////////////////////////////////////////////////////////////////////////////////

		public function respDocumentoApresentadoSaveSuccess( sender: Object, body: Object, extraInfo: Object ): void
		{
			view.vo = DocumentoApresentado(body);
			closePopUp();
		}

		//////////////////////////////////////////////////////////////////////////////////////////////////////

		public function respDocumentoApresentadoSaveFailure( sender: Object, body: Object, extraInfo: Object ): void
		{
			view.errorString = "Falha no registro do documento.";
		}

	}
}